package com.key.mapper;

import com.key.common.dto.RepairFormFindDTO;
import com.key.common.vo.AssetsVO;
import com.key.common.vo.RepairFormVO;
import com.key.entity.RepairForm;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author wei
 * @create 2023-02-21 19:38
 */
public interface RepairFormMapper {

    //################对repair_form的操作################

    /**
     * 添加维修表
     * @param repairForm
     * @return
     */
    int insertRepairForm(RepairForm repairForm);

    /**
     * 删除维修表
     * @param rfNo
     * @return
     */
    int deleteRepairFormByRfNo(@Param("rfNo") String rfNo);

    /**
     * 更新维修表
     * @param repairForm
     * @return
     */
    int updateRepairForm(RepairForm repairForm);

    /**
     * 查询维修清单表，含高级搜素
     * @param repairFormFindDTO
     * @return
     */
    List<RepairForm> selectRepairForm(RepairFormFindDTO repairFormFindDTO);

    /**
     * 查询维修清单数量
     * @param repairFormFindDTO
     * @return
     */
    Integer getRepairFormCount(RepairFormFindDTO repairFormFindDTO);

    /**
     * 根据单号查询维修表信息
     * @param rfNo
     * @return
     */
    RepairFormVO selectRepairFormByRfNo(@Param("rfNo") String rfNo);

    List<RepairForm> selectEndRepairFormList();

    //###############对assets_repair的操作###############

    /**
     * 添加维修和资产的关系表
     * @param rfNo
     * @param assetsId
     * @return
     */
    int insertAssetsRepair(@Param("rfNo") String rfNo, @Param("assetsId") Long assetsId);

    /**
     * 删除维修和资产的关系表
     * @param rfNo
     * @return
     */
    int deleteAssetsRepairByRfNo(@Param("rfNo") String rfNo);


    //###################联表操作####################

    /**
     * 根据单号查询维修表的资产
     * @param rfNo
     * @return
     */
    List<AssetsVO> selectAssetsByRfNo(@Param("rfNo") String rfNo);

    /**
     * 根据单号将清单下的所有资产的状态设置为指定状态
     * @param rfNo
     * @param assetsState
     * @return
     */
    int updateAssetsState(@Param("rfNo") String rfNo, @Param("assetsState") Integer assetsState);

    /**
     * 根据单号将清单下的指定资产的状态设置为指定状态
     * @param rfNo
     * @param assetsState
     * @param assetsIds
     * @return
     */
    int updateAssetsStateById(@Param("rfNo") String rfNo, @Param("assetsState") Integer assetsState, @Param("assetsIds") List<Long> assetsIds);

}
